home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / bbs / Hydra11s.lha / HBBS / Source / Oberon / ANSIConsole.mod next >
Text File  |  1996-07-02  |  6KB  |  269 lines

  1. MODULE ANSIConsole;
  2.  
  3.     TYPE
  4.     WriteProc* = PROCEDURE(ch: CHAR);
  5.  
  6.     CONST
  7.     stPlain* = 0;                stConcealed* = 8;
  8.     stBold* = 1;                 stNonBold* = 22;
  9.     stFaint* = 2;                stNonItalic* = 23;
  10.     stItalic* = 3;               stNonUnderscore* = 24;
  11.     stUnderscore* = 4;           stNonReversed* = 27;
  12.     stReversed* = 5;             stNonConcealed* = 28;
  13.  
  14.     cForeBlack* = 30;            cBackBlack* = 40;
  15.     cForeRed* = 31;              cBackRed* = 41;
  16.     cForeGreen* = 32;            cBackGreen* = 42;
  17.     cForeYellow* = 33;           cBackYellow* = 43;
  18.     cForeBlue* = 34;             cBackBlue* = 44;
  19.     cForePurple* = 35;           cBackPurple* = 45;
  20.     cForeCyan* = 36;             cBackCyan* = 46;
  21.     cForeWhite* = 37;            cBackWhite* = 47;
  22.     cForeDefault* = 39;          cBackDefault* = 49;
  23.  
  24.     PROCEDURE WriteVal(w: WriteProc; val: INTEGER);
  25.     VAR
  26.         factor: INTEGER;
  27.     BEGIN
  28.     factor:= 1;
  29.     WHILE factor < val DO factor:= factor * 10 END;
  30.     LOOP
  31.         w(CHR((val DIV factor) + 48));
  32.         val:= val MOD factor;
  33.         IF factor <= 1 THEN EXIT END;
  34.         factor:= factor DIV 10;
  35.     END;
  36.     END WriteVal;
  37.  
  38.     PROCEDURE BELL* (w: WriteProc);
  39.     BEGIN
  40.     w(CHR(7H));
  41.     END BELL;
  42.  
  43.     PROCEDURE BACKSPACE* (w: WriteProc);
  44.     BEGIN
  45.     w(CHR(8H));
  46.     END BACKSPACE;
  47.  
  48.     PROCEDURE HTAB* (w: WriteProc);
  49.     BEGIN
  50.     w(CHR(9H));
  51.     END HTAB;
  52.  
  53.     PROCEDURE LF* (w: WriteProc);
  54.     BEGIN
  55.     w(CHR(0AH));
  56.     END LF;
  57.  
  58.     PROCEDURE VTAB* (w: WriteProc);
  59.     BEGIN
  60.     w(CHR(0BH));
  61.     END VTAB;
  62.  
  63.     PROCEDURE FF* (w: WriteProc);
  64.     BEGIN
  65.     w(CHR(0CH));
  66.     END FF;
  67.  
  68.     PROCEDURE CR* (w: WriteProc);
  69.     BEGIN
  70.     w(CHR(0DH));
  71.     END CR;
  72.  
  73.     PROCEDURE SI* (w: WriteProc);
  74.     BEGIN
  75.     w(CHR(0EH));
  76.     END SI;
  77.  
  78.     PROCEDURE SO* (w: WriteProc);
  79.     BEGIN
  80.     w(CHR(0FH));
  81.     END SO;
  82.  
  83.     PROCEDURE ESC* (w: WriteProc);
  84.     BEGIN
  85.     w(CHR(1BH));
  86.     END ESC;
  87.  
  88.     PROCEDURE INDEX* (w: WriteProc);
  89.     BEGIN
  90.     w(CHR(84H));
  91.     END INDEX;
  92.  
  93.     PROCEDURE NextLine* (w: WriteProc);
  94.     BEGIN
  95.     w(CHR(85H));
  96.     END NextLine;
  97.  
  98.     PROCEDURE SetHTabPos* (w: WriteProc);
  99.     BEGIN
  100.     w(CHR(88H));
  101.     END SetHTabPos;
  102.  
  103.     PROCEDURE ReverseINDEX* (w: WriteProc);
  104.     BEGIN
  105.     w(CHR(8DH));
  106.     END ReverseINDEX;
  107.  
  108.     PROCEDURE CSI* (w: WriteProc);
  109.     BEGIN
  110.     w(CHR(1BH)); w("[");
  111.     END CSI;
  112.  
  113.     PROCEDURE RESET* (w: WriteProc);
  114.     BEGIN
  115.     ESC(w); w(CHR(63H));
  116.     END RESET;
  117.  
  118.     PROCEDURE INSERT* (w: WriteProc; count: INTEGER);
  119.     BEGIN
  120.     CSI(w);
  121.     IF count >1 THEN WriteVal(w, count) END;
  122.     w(CHR(40H));
  123.     END INSERT;
  124.  
  125.     PROCEDURE UP* (w: WriteProc; count: INTEGER);
  126.     BEGIN
  127.     CSI(w);
  128.     IF count > 1 THEN WriteVal(w, count) END;
  129.     w(CHR(41H));
  130.     END UP;
  131.  
  132.     PROCEDURE DOWN* (w: WriteProc; count: INTEGER);
  133.     BEGIN
  134.     CSI(w);
  135.     IF count > 1 THEN WriteVal(w, count) END;
  136.     w(CHR(42H));
  137.     END DOWN;
  138.  
  139.     PROCEDURE RIGHT* (w: WriteProc; count: INTEGER);
  140.     BEGIN
  141.     CSI(w);
  142.     IF count > 1 THEN WriteVal(w, count) END;
  143.     w(CHR(43H));
  144.     END RIGHT;
  145.  
  146.     PROCEDURE LEFT* (w: WriteProc; count: INTEGER);
  147.     BEGIN
  148.     CSI(w);
  149.     IF count > 1 THEN WriteVal(w, count) END;
  150.     w(CHR(44H));
  151.     END LEFT;
  152.  
  153.     PROCEDURE CURSORNextLine* (w: WriteProc; count: INTEGER);
  154.     BEGIN
  155.     CSI(w);
  156.     IF count > 1 THEN WriteVal(w, count) END;
  157.     w(CHR(45H));
  158.     END CURSORNextLine;
  159.  
  160.     PROCEDURE CURSORPrevLine* (w: WriteProc; count: INTEGER);
  161.     BEGIN
  162.     CSI(w);
  163.     IF count > 1 THEN WriteVal(w, count) END;
  164.     w(CHR(46H));
  165.     END CURSORPrevLine;
  166.  
  167.     PROCEDURE CURSORGoTo* (w: WriteProc; row, column: INTEGER);
  168.     BEGIN
  169.     CSI(w);
  170.     IF row > 1 THEN WriteVal(w, row) END;
  171.     IF column > 1 THEN w(CHR(3BH)); WriteVal(w, column) END;
  172.     w(CHR(48H));
  173.     END CURSORGoTo;
  174.  
  175.  
  176.     PROCEDURE GotoTAB* (w: WriteProc; count: INTEGER);
  177.     BEGIN
  178.     CSI(w);
  179.     IF count > 1 THEN WriteVal(w, count) END;
  180.     w(CHR(49H));
  181.     END GotoTAB;
  182.  
  183.     PROCEDURE EraseToEOF* (w: WriteProc);
  184.     BEGIN
  185.     CSI(w); w(CHR(4AH));
  186.     END EraseToEOF;
  187.  
  188.     PROCEDURE EraseToEOL* (w: WriteProc);
  189.     BEGIN
  190.     CSI(w); w(CHR(4BH));
  191.     END EraseToEOL;
  192.  
  193.     PROCEDURE InsertLine* (w: WriteProc);
  194.     BEGIN
  195.     CSI(w); w(CHR(4CH));
  196.     END InsertLine;
  197.  
  198.     PROCEDURE DeleteLine* (w: WriteProc);
  199.     BEGIN
  200.     CSI(w); w(CHR(4DH));
  201.     END DeleteLine;
  202.  
  203.     PROCEDURE DeleteChars* (w: WriteProc; count: INTEGER);
  204.     BEGIN
  205.     CSI(w);
  206.     IF count > 1 THEN WriteVal(w, count) END;
  207.     w(CHR(50H));
  208.     END DeleteChars;
  209.  
  210.     PROCEDURE ScrollUp* (w: WriteProc; count: INTEGER);
  211.     BEGIN
  212.     CSI(w);
  213.     IF count > 1 THEN WriteVal(w, count) END;
  214.     w(CHR(53H));
  215.     END ScrollUp;
  216.  
  217.     PROCEDURE ScrollDown* (w: WriteProc; count: INTEGER);
  218.     BEGIN
  219.     CSI(w);
  220.     IF count > 1 THEN WriteVal(w, count) END;
  221.     w(CHR(54H));
  222.     END ScrollDown;
  223.  
  224.     PROCEDURE CreateTab* (w: WriteProc);
  225.     BEGIN
  226.     CSI(w); WriteVal(w, 0); w(CHR(57H));
  227.     END CreateTab;
  228.  
  229.     PROCEDURE ClearTab* (w: WriteProc);
  230.     BEGIN
  231.     CSI(w); WriteVal(w, 2); w(CHR(57H));
  232.     END ClearTab;
  233.  
  234.     PROCEDURE ClearAllTabs* (w: WriteProc);
  235.     BEGIN
  236.     CSI(w); WriteVal(w, 5); w(CHR(57H));
  237.     END ClearAllTabs;
  238.  
  239.     PROCEDURE GoToTABBackward* (w: WriteProc; count: INTEGER);
  240.     BEGIN
  241.     CSI(w);
  242.     IF count > 1 THEN WriteVal(w, count) END;
  243.     w(CHR(5AH));
  244.     END GoToTABBackward;
  245.  
  246.     PROCEDURE SetLFMode* (w: WriteProc; dual: BOOLEAN);
  247.     BEGIN
  248.     CSI(w); w(CHR(32H)); w(CHR(30H));
  249.     IF dual THEN w(CHR(68H)) ELSE w(CHR(6CH)) END;
  250.     END SetLFMode;
  251.  
  252.     PROCEDURE ReportPos* (w: WriteProc);
  253.     BEGIN
  254.     CSI(w); w(CHR(36H)); w(CHR(6EH));
  255.     END ReportPos;
  256.  
  257.     PROCEDURE SetStyle* (w: WriteProc; style: INTEGER);
  258.     BEGIN
  259.     CSI(w); WriteVal(w, style); w(CHR(6DH));
  260.     END SetStyle;
  261.  
  262.     PROCEDURE SetColor* (w: WriteProc; color: INTEGER);
  263.     BEGIN
  264.     CSI(w); WriteVal(w, color); w(CHR(6DH));
  265.     END SetColor;
  266.  
  267. END ANSIConsole.
  268.  
  269.